package com.thitech.sif;

import com.thitech.sif.context.AbsContext;
import com.thitech.sif.utils.DataMap;

/**
 * 服务执行器
 * @author shisheng.lian
 *
 */
public interface Executor {
	/**
	 * 设置Service Id，用于从Context中获取服务执行时所需要的数据，与配置文件中的ws-service、socket-service的ID值对应
	 * @param serviceId
	 */
	public void setServiceId(String serviceId);
	
	/**
	 * 获取Service Id值
	 * @return
	 */
	public String getServiceId();
	
	/**
	 * 设置服务调用时的业务数据标识，如：流水号
	 * @param ticket
	 */
	public void setTicket(String ticket);
	
	/**
	 * 获取服务调用业务数据标识
	 * @return
	 */
	public String getTicket();
	
	/**
	 * 设置业务规则ID
	 * @param businessId
	 */
	public void setBusinessId(String businessId);
	
	/**
	 * 获取业务规则ID
	 * @return
	 */
	public String getBusinessId();
	
	/**
	 * 获取或设置扩展数据集对象，除ticket、business外的其它数据都可通过该集合扩展
	 * 拦截器之间传递数据也通过该集合操作
	 * @return
	 */
	public DataMap getExtDataMap();
	
	/**
	 * 获取或设置服务调用关键数据集对象，当服务需要控制重复调用时，用于控制同一业务循环调用同一个服务的情况
	 * @return
	 */
	public DataMap getServiceKeyDataMap();
	
	/**
	 * 获取服务执行者对应的Context对象
	 * @return
	 */
	public AbsContext getContext();
	
	/**
	 * 获取服务类型
	 * @return
	 */
	public String getServiceType();
}
